<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name=ProgId content=VisualStudio.HTML>
<meta name=Originator content="Microsoft Visual Studio .NET 7.1">
</head>
<body>
<!-- Begin Common Doc (Swaf.BizRule) -->
		<p>
			Provides business rule management and execution support that includes advanced 
			parallel processing and asynchronous calling support.</p>
		<h3>Design Patterns</h3>
		<ul>
			<li>
				Facade</li>
			<li>
				Proxy</li>
			<li>
				Observer</li>
		</ul>
		<h3>Design Details</h3>
		<p>
			The base interfaces and classes defined in this package are focused on defining 
			a facade to the business rules of an application to the client objects that use 
			them. Client code calls one of the <tt>RuleManager.execute</tt> methods to 
			execute business rules and only interacts with business rules through the <tt>RuleManager</tt>
			facade class. <tt>RuleManager</tt> provides several overloads of <tt>execute</tt>
			that offer the ability to call rules asynchronously or synchronously as well as 
			execute multiple rules in one call to <tt>execute</tt>. Depending on the 
			hosting environment, calls to the multi-rule versions of <tt>execute</tt> may 
			execute in parallel within the same call context.
		</p>
		<p>
			In order for a business rule to be available for use it must be configured in 
			the BusinessRules section of the application configuration files. New Rule 
			elements are specified that define the business rule:</p>
		<div style="PADDING-LEFT:30px">
			<p class="MsoNormal" style='mso-layout-grid-align:none'><span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Lucida Console'">&lt;</span><span style="FONT-SIZE:8pt;COLOR:maroon;FONT-FAMILY:'Lucida Console'">BusinessRules</span><span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Lucida Console'">&gt;<br/>
<span style='mso-spacerun:yes'></span>&nbsp; &lt;</span><span style="FONT-SIZE:8pt;
COLOR:maroon;
FONT-FAMILY:'Lucida Console'">BusinessRule&nbsp;</span><span style="FONT-SIZE:8pt;COLOR:fuchsia;FONT-FAMILY:'Lucida Console'"></span><span style="FONT-SIZE:8pt;COLOR:red;FONT-FAMILY:'Lucida Console'">name</span><span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Lucida Console'">="ruleName"&gt;<br/>
<span style='mso-spacerun:yes'></span>&nbsp;&nbsp;&nbsp; 
&lt;CALL_TYPE&nbsp;</span><span style="FONT-SIZE:
8pt;COLOR:
maroon;FONT-FAMILY:
'Lucida Console'"></span><span style="FONT-SIZE:8pt;COLOR:fuchsia;FONT-FAMILY:'Lucida Console'"></span><span style="FONT-SIZE:8pt;COLOR:red;FONT-FAMILY:'Lucida Console'">callparams<SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">="..."&nbsp;</SPAN></span><span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Lucida Console'">/&gt;<br/>
<span style='mso-spacerun:yes'></span>&nbsp;&nbsp;&lt;/</span><span style="FONT-SIZE:
8pt;COLOR:
maroon;FONT-FAMILY:
'Lucida Console'">BusinessRule</span><span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Lucida Console'">&gt;<br/></span><span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Lucida Console'">&lt;/</span><span style="FONT-SIZE:8pt;COLOR:maroon;FONT-FAMILY:'Lucida Console'">BusinessRules</span><span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Lucida Console'">&gt;</span><span style='FONT-SIZE:8pt'><o:p></o:p>
				</span></p>
		</div>
		<p>In the example above, the "CALL_TYPE" element can be any type defined in the 
			"CallTypes" class factory in the application configuration.</p>
		<h3>Business rule call results</h3>
		<p>Calling a rule through the <tt>RuleManager.execute</tt> method will return an 
			object that implements the <tt>IResults</tt> interface. Wether a single rule or 
			multiple rules are executed, a single <tt>IResults</tt> is always returned. 
			Methods on the interface expose the number of return values and the rule 
			results and or exception info.</p>
	<!-- End Common Doc -->


</body>
</html>
